package com.dingding.user.core.passenger.coupon.service;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.annotation.Resource;

import org.apache.log4j.Logger;

import com.dingding.common.core.base.daox.AbstractBaseInjectionDao;
import com.dingding.common.core.beans.UserCoupon;
import com.dingding.common.core.beans.activity.CouponCity;
import com.dingding.facde.activity.service.ICouponFacade;

/**
 * 
 * @Description: 用户优惠券服务抽象类
 * @author CHEHUANBO
 * @date 2016年12月15日
 * @version V2.6.2
 * 
 */
@SuppressWarnings("all")
public class AbstractUserCouponService extends AbstractBaseInjectionDao {

	private static final Logger log = Logger.getLogger(AbstractUserCouponService.class);

	@Resource(name = "_couponFacade")
	private ICouponFacade couponFacade;

	/**
	 * 
	 * @Description: 校验当前现金券是否符合使用条件
	 * @author CHEHUANBO
	 * @version V2.6.2
	 * 
	 */
	protected boolean validateCashCoupon(UserCoupon userCoupon, int produceType, String cityNo) {

		// 优惠券ID
		int couponId = userCoupon.getCouponId();
		// 使用范围
		int useScope = userCoupon.getUseScope();
		// 使用城市是否限制
		int cityScope = userCoupon.getCityScope();

		// 当前优惠券不能再此产品下使用
		if (useScope != produceType) {
			return false;
		}

		// 限制使用城市
		if (cityScope == 2) {
			List<CouponCity> couponCityList = invokeRemoteCouponCityService(couponId);
			if (couponCityList != null && couponCityList.size() > 0) {
				for (CouponCity couponCity : couponCityList) {
					String cityName = couponCity.getCityName();
					if (cityName != null && cityName.equals(cityNo)) {
						return true;
					}
				}
			}else{
				return false;
			}
		}

		return true;

	}

	/**
	 * 
	 * @Description: 校验当前折扣券是否符合使用条件
	 * @author CHEHUANBO
	 * @version V2.6.2
	 * 
	 */
	private void validateDiscountCoupon(UserCoupon userCoupon) {

	}

	/**
	 * 
	 * @Description: 调用远程服务接口获取当前优惠券的使用城市
	 * @param couponId
	 *            优惠券ID
	 * @author CHEHUANBO
	 * @version V2.6.2
	 * 
	 */
	protected List<CouponCity> invokeRemoteCouponCityService(int couponId) {

		// 获取当前优惠券的所有使用城市
		Map<String, Object> reqMap = new HashMap<String, Object>();
		reqMap.put("couponId", couponId);
		try {
			Map<String, Object> resMap = couponFacade.getAllCouponCity(reqMap);
			return (List<CouponCity>) resMap.get("couponCityList");
		} catch (Exception e) {
			log.error("调用远程服务接口获取当前优惠券的使用城市接口出现异常！优惠券ID:" + couponId, e);
		}

		return null;

	}

}
